package main

import "fmt"

//函数指针和指针函数
//函数指针:一个指针,指向了一个函数的指针
//指针函数:一个函数,该函数的返回值是一个指针
func func1() {
	fmt.Println("111")
}

//函数指针
func func2() [4]int {
	arr := [4]int{1, 3, 2, 4}
	return arr
}

//指针函数
func func3() *[4]int {
	arr2 := [4]int{5, 6, 7, 8}
	fmt.Printf("函数中arr2的地址是%p", &arr2)
	return &arr2
}
func main() {
	var a func()
	a = func1
	a()
	arr1 := func2()
	fmt.Printf("%T,%p,%v\n", arr1, &arr1, arr1)
	arr3 := func3()
	fmt.Printf("%T,%p,%v\n", arr3, &arr3, arr3)
	fmt.Printf("arr2中存储的数组地址是%p", arr3)
}
